Set directory

pwd <- getwd()
myfiles <- "Formula1_Data"
data.folder <- paste0(pwd,"/",myfiles)

Import files

circuits <- read.csv(paste0(data.folder,"/circuits.csv"))
constructor_results <- read.csv(paste0(data.folder,"/constructor_results.csv"))
constructor_standings <- read.csv(paste0(data.folder,"/constructor_standings.csv"))
constructors <- read.csv(paste0(data.folder,"/constructors.csv"))
driver_standings <- read.csv(paste0(data.folder,"/driver_standings.csv"))
drivers <- read.csv(paste0(data.folder,"/drivers.csv"))
lap_times <- read.csv(paste0(data.folder,"/lap_times.csv"))
pit_stops <- read.csv(paste0(data.folder,"/pit_stops.csv"))
qualifying <- read.csv(paste0(data.folder,"/qualifying.csv"))
races <- read.csv(paste0(data.folder,"/races.csv"))
results <- read.csv(paste0(data.folder,"/results.csv"))
seasons <- read.csv(paste0(data.folder,"/seasons.csv"))
status <- read.csv(paste0(data.folder,"/status.csv"))
drivers <- drivers %>% 
  mutate(fullname=(paste(surname,forename, sep = ", ")))

constructor_standings_name <- left_join(constructor_standings,constructors,
                                        by=c("constructorId"))
str(races)
## 'data.frame':    1058 obs. of  8 variables:
##  $ raceId   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ year     : int  2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 ...
##  $ round    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ circuitId: int  1 2 17 3 4 6 5 9 20 11 ...
##  $ name     : chr  "Australian Grand Prix" "Malaysian Grand Prix" "Chinese Grand Prix" "Bahrain Grand Prix" ...
##  $ date     : chr  "2009-03-29" "2009-04-05" "2009-04-19" "2009-04-26" ...
##  $ time     : chr  "06:00:00" "09:00:00" "07:00:00" "12:00:00" ...
##  $ url      : chr  "http://en.wikipedia.org/wiki/2009_Australian_Grand_Prix" "http://en.wikipedia.org/wiki/2009_Malaysian_Grand_Prix" "http://en.wikipedia.org/wiki/2009_Chinese_Grand_Prix" "http://en.wikipedia.org/wiki/2009_Bahrain_Grand_Prix" ...

Circuits

races_1 <- races %>% 
  group_by(name, circuitId) %>% 
  count(name) %>% 
  rename(Total_Races= n)
races_join1 <- left_join(races_1, circuits,
                         by =c("circuitId"))
world_map <- map_data("world")
races_plot1 <- ggplot() +
  geom_polygon(data = world_map, aes(x=long, y = lat, group = group), fill="darkgreen", alpha=0.3) +
  geom_point(data=races_join1, aes(x=lng, y=lat, colour=Total_Races, 
                      text = paste(" Races:",Total_Races,"\n",name.y," \n",location,", ",country)))+
 scale_color_viridis(option="magma", trans="log",name="Total Races", breaks =c(1,5,10,30,60))
## Warning: Ignoring unknown aesthetics: text
fig1 <- ggplotly(races_plot1, tooltip="text")
fig1

Drivers

driverstart_join1 <- left_join(driver_standings, drivers,
                         by =c("driverId"))

driverstart_join1 <- driverstart_join1 %>% 
  group_by(driverId) %>% 
  mutate(race_starts=n()) %>% 
  mutate(fullname=(paste(forename, surname,sep = " ")))
driverstart_plot <- ggplot() +
  geom_bar(data=driverstart_join1,aes(y=reorder(fullname,race_starts),fill=nationality,stat="count"))
## Warning: Ignoring unknown aesthetics: stat
fig2 <- ggplotly(driverstart_plot)
fig2
driver_results_join1 <- left_join(results,drivers,
                                  by=c("driverId"))
driver_results_join2 <- left_join(driver_results_join1,constructors,
                                  by=c("constructorId"))
driver_results_join2_win <- driver_results_join2 %>% 
  filter(position=="1") %>% 
   group_by(driverId, constructorId) %>% 
   mutate(wins=n())
driverstart_win_plot <- driver_results_join2_win %>% 
  count(fullname, name,wins,surname) %>% 
    ggplot() +
      geom_col(aes(x=reorder(fullname,n,sum),y=n, fill=name,text = paste(surname,"",wins, "\n",name))) +
      coord_flip()  
## Warning: Ignoring unknown aesthetics: text
      #text = paste(" Races:",Total_Races,"\n",name.y," \n",location,", ",country)))+

fig3 <- ggplotly(driverstart_win_plot,  tooltip="text")
fig3

Pit Stops

pitstop_race_join1 <- left_join(pit_stops,races,
                                  by=c("raceId"))

pitstop_race_join2 <- pitstop_race_join1 %>% 
  group_by(raceId) %>% 
  mutate(slowest.pit = max(duration, na.rm = T),
         fastest.pit=min(duration, na.rm = T))
pitstop_race_plot <- ggplot() +
    geom_point(data=pitstop_race_join2,aes(x=year, y=slowest.pit),colour="red") +
    geom_point(data=pitstop_race_join2,aes(x=year, y=fastest.pit),colour="green") +
    facet_wrap(~name)

fig4 <- ggplotly(pitstop_race_plot)
fig4